//
//  AppDelegate.m
//  Demo1_UIViewController视图切换
//
//  Created by LZXuan on 15-5-9.
//  Copyright (c) 2015年 轩哥. All rights reserved.
//

#import "AppDelegate.h"
#import "FirstViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate
- (void)dealloc {
    [_window release];
    [super dealloc];
}


 /*
 
	MVC 是手机软件开发常用的框架设计模式
 M (model) 数据模型 (主要负责数据的存储)
 V(view) 视图   (主要负责与用户进行交互，展示界面和数据)
 C(controller)控制器 (主要负责模型和视图之间的联系：将下载后的数据赋值给数据	模型，将数据模型传给视图展示，刷新视图界面等)
 
 理论上model和view 没有直接的关联 ,他们之间是通过视图控制器进行联系
 好处:(目的)使代码易维护、易复用、易扩展 耦合性低，降低了软件的开发和维护成本。
 
 */

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    //实例化一个视图控制器对象 (视图部分和 控制器部分)
    FirstViewController *first = [[FirstViewController alloc]  init];
    //ios4之前做法（现在这样做 是有问题的）
    /*
    [self.window addSubview:first.view];
    [first release];
     */
    //现在正确地做法
    //设置window的根视图控制器
    self.window.rootViewController = first;
    [first release];
    
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end
